#ifndef LISTENSCOMP_H
#define LISTENSCOMP_H

#include "ListComp.h"

/**
 * Classe qui gère les ensembles de compétences de classe. Cela permet
 * d'avoir au même endroit le nom, le coût de l'ensemble, ainsi que
 * les compétences incluses et la liste des éléments dont l'état est
 * gelé lors de la sélection d'un tel ensemble.
 *
 * @author Johan "Solo" Luisier
 */
class ListEnsComp : public ListComp
{
 public:
  ListEnsComp();
  ListEnsComp(const std::string& nom, const unsigned int& prix,
	      const std::vector< unsigned int >& membres,
	      const unsigned int& numPrerequis = 0,
	      const unsigned int& numRaces = 0, const bool& oblig = false);
  ListEnsComp(const std::string& nom, const unsigned int& prix,
	      const std::vector< unsigned int >& membres,
	      const std::vector< unsigned int >& exclus,
	      const unsigned int& numPrerequis = 0,
	      const unsigned int& numRaces = 0, const bool& oblig = false);
  ListEnsComp(const ListEnsComp& lsEnsComp);
  ~ListEnsComp();
  const ListEnsComp& operator=(const ListEnsComp& lsEnsComp);
  const std::vector< unsigned int >* membres() const;
  const std::vector< unsigned int >* exclus() const;
  const unsigned int& numeroPrerequis() const;
  const unsigned int& numeroRaces() const;
  const bool& choixPrealable() const;
 protected:
  /**
   * Conteneur des numéros des compétences comprises dans l'ensemble.
   */
  std::vector< unsigned int > Membres;
  /**
   * Conteneur des compétences "gelées" lors du choix de l'ensemble
   * (pour éviter de trafiquer un ensemble).
   */
  std::vector< unsigned int > Exclus;
  /**
   * Indique quels sont les prérequis à appliquer pour cet
   * ensemble. Par défaut, il s'agit du même pour tous.
   */
  unsigned int NumeroPrerequis;
  /**
   * Indique quelles sont les races admises pour cet ensemble. Par
   * défaut, il s'agit des mêmes pour tous.
   */
  unsigned int NumeroRacesAdmises;
  /**
   * Indique si le choix est obligatoire avant de passer à la
   * suite. Par défaut ce n'est pas le cas.
   */
  bool ChoixPrealable;
};

#endif // LISTENSCOMP_H
